package com.jt.controller;

import com.jt.pojo.User;
import com.jt.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@CrossOrigin//解决跨域问题
public class UserController {
    @Autowired
    private UserService userService;

    @RequestMapping("findall")
    public List<User> findAll(){
        return userService.findAll();
    }

    @GetMapping("userById")//只允许get方式请求
    public User userById(Integer id){
        return userService.userById(id);
    }
    @GetMapping("getUserByUS")
    public List<User> getUserByUS(User user){
        return userService.getUserByUS(user);
    }
    @GetMapping("/user/{name}")
    public List<User> getUserByName(@PathVariable String name){
        return userService.getUserByName(name);
    }
    /**
     * 实现数据删除
     * url: http: //localhost:8090/deleteByName
     * 参数: 对象封装
     * 返回值: 删除数据成功
     * */
    @DeleteMapping("deleteByName")
    public String deleteByName(User user){
        userService.deleteByName(user);
        return "删除成功";
    }
    @DeleteMapping("/user/{id}")
    public void deleteId(@PathVariable Integer id){
        userService.deleteId(id);
    }

    @DeleteMapping("/user/{name}/{sex}")
    public String deleteUser(User user){
        userService.deleteUser(user);
        return "删除成功";
    }
    /**
     * 需求：完成用户的数据入库操作
     * URL：http://localhost:8090/saveUser
     * 参数：对象的JSON串. {key:value}
     * 类型：POST
     * 返回值：String
     * 难点：如何将JSON串转化为User对象
     * StringMVc: 针对于JSON于对象转化  开发2个注解
     *            1.@ResponseBody 将对象转化为JSON串
     *            2.@RequestBody 将JSON串转化为User对象
     *

     */
    @PostMapping("/saveUser")
    public String saveUser(@RequestBody User user){
        System.out.println(user);
        userService.saveUser(user);
        return "数据新增成功";
    }
    //用户新增restFul风格
    @PostMapping("/user/{name}/{age}/{sex}")
    public String saveUser2(User user){
        userService.saveUser(user);
        System.out.println("数据新增成功！");
        return "数据新增成功！";
    }
    /*
    * 根据名字查询
    * */
    @GetMapping("selectName")
    public List<User> selectName(String name){
        return userService.selectName(name);
    }
    /**
     * 实现用户列表修改操作
     * url: /updateUser
     * 参数：js对象  对象的json串
     * 返回值：String
     * */
    @PutMapping("/updateUser")
    public String updateUser(@RequestBody User user){
        userService.updateUser(user);
        return "修改成功！！！";
    }
}
